home *** CD-ROM | disk | FTP | other *** search
/ PC Action 1997 January / PCA0197.ISO / demos / ambe / roxy / roxy.dxr / 00004_utility scripts.ls < prev    next >
Encoding:
Text File  |  1996-10-28  |  12.9 KB  |  366 lines

  1. on camLogInit
  2.   global oPuppeteer, oStoryteller, gOriginPoint, gCPU
  3.   freezeInventory()
  4.   disablePeekAlert()
  5.   if getState(oStoryteller, #playerHasVideotape) = #usedUp then
  6.     puppetSprite(45, 1)
  7.     updateStage()
  8.     set the castNum of sprite 45 to getProp(the lsForegroundData of oPuppeteer, #camRewind)
  9.     set the visible of sprite 45 to 0
  10.     set the loc of sprite 45 to point(323, 213) + gOriginPoint
  11.     set storedPosition to getState(oStoryteller, #videoTapePosition)
  12.     if storedPosition <> #None then
  13.       set the movieTime of sprite 44 to storedPosition
  14.     end if
  15.     if gCPU = #PC then
  16.       suspendSounds(#fadeOut)
  17.     end if
  18.   end if
  19.   updateStage()
  20. end
  21.  
  22. on camLogShutdown
  23.   global oPuppeteer, oStoryteller, gCPU
  24.   unFreezeInventory()
  25.   enablePeekAlert()
  26.   set storedPosition to getState(oStoryteller, #videoTapePosition)
  27.   if storedPosition <> #None then
  28.     setState(oStoryteller, #videoTapePosition, the movieTime of sprite 44)
  29.   end if
  30.   put "stopping & unpuppeting cam-tape"
  31.   set the movieRate of sprite 44 to 0
  32.   puppetSprite(44, 0)
  33.   puppetSprite(45, 0)
  34.   updateStage()
  35.   if (getState(oStoryteller, #playerHasVideotape) = #usedUp) and (gCPU = #PC) then
  36.     restoreSounds(#fadeIn)
  37.   end if
  38. end
  39.  
  40. on camControl whichBtn
  41.   global oStoryteller, oPuppeteer, gHorsepower
  42.   set storedPosition to getState(oStoryteller, #videoTapePosition)
  43.   if integerp(storedPosition) and (gHorsepower = #low) then
  44.     set the movieRate of sprite 44 to 0
  45.     updateStage()
  46.   end if
  47.   set buttonStack to getProp(the lsMultiframes of oPuppeteer, #camButtons)
  48.   set buttonSprite to 0
  49.   repeat with i = 10 to 48
  50.     if getPos(buttonStack, the castNum of sprite i) then
  51.       set buttonSprite to i
  52.       exit repeat
  53.     end if
  54.   end repeat
  55.   set markerList to [44, 2152, 4432, 7898, 12474, 14984]
  56.   if whichBtn = #prevMarker then
  57.     set the castNum of sprite buttonSprite to getAt(buttonStack, 3)
  58.   end if
  59.   if whichBtn = #play then
  60.     set the castNum of sprite buttonSprite to getAt(buttonStack, 4)
  61.   end if
  62.   if whichBtn = #nextMarker then
  63.     set the castNum of sprite buttonSprite to getAt(buttonStack, 5)
  64.   end if
  65.   if whichBtn = #pause then
  66.     set the castNum of sprite buttonSprite to getAt(buttonStack, 6)
  67.   end if
  68.   updateStage()
  69.   set buttonDownTime to the ticks
  70.   repeat while the ticks < (buttonDownTime + 8)
  71.     nothing()
  72.   end repeat
  73.   set the castNum of sprite buttonSprite to getAt(buttonStack, 2)
  74.   if integerp(storedPosition) then
  75.     set currentPosition to the movieTime of sprite 44
  76.     set currentSegment to 1
  77.     repeat with i = 1 to count(markerList)
  78.       if getAt(markerList, i) <= currentPosition then
  79.         set currentSegment to i
  80.       end if
  81.     end repeat
  82.     set onScreen to the loc of sprite 44
  83.     set offScreen to the loc of sprite 45
  84.     if (whichBtn = #prevMarker) or (whichBtn = #nextMarker) then
  85.       if (whichBtn = #prevMarker) and (currentSegment > 1) then
  86.         set currentSegment to currentSegment - 1
  87.       end if
  88.       if (whichBtn = #nextMarker) and (currentSegment < count(markerList)) then
  89.         set currentSegment to currentSegment + 1
  90.       end if
  91.       set newPosition to getAt(markerList, currentSegment)
  92.       set trueLength to abs(the movieTime of sprite 44 - newPosition) / 20
  93.       set maxLength to 300
  94.       set rewindLength to min(trueLength, maxLength)
  95.       set the movieRate of sprite 44 to 0
  96.       set the movieTime of sprite 44 to newPosition
  97.       set the loc of sprite 44 to offScreen
  98.       set the movieTime of sprite 45 to 0
  99.       updateStage()
  100.       set the loc of sprite 45 to onScreen
  101.       set the movieRate of sprite 45 to 1
  102.       set the visible of sprite 45 to 1
  103.       set the volume of sprite 45 to abs(the volume of sprite 45)
  104.       updateStage()
  105.       set stopTime to the ticks + rewindLength
  106.       repeat while the ticks < stopTime
  107.         updateStage()
  108.       end repeat
  109.       set the visible of sprite 45 to 0
  110.       set the loc of sprite 45 to offScreen
  111.       set the movieRate of sprite 45 to 0
  112.       set the loc of sprite 44 to onScreen
  113.       set the movieTime of sprite 44 to newPosition
  114.       updateStage()
  115.       set the movieRate of sprite 44 to 1
  116.       updateStage()
  117.     end if
  118.     if whichBtn = #pause then
  119.       set the movieRate of sprite 44 to 0
  120.     end if
  121.     if whichBtn = #play then
  122.       if the movieTime of sprite 44 > 15000 then
  123.         set the movieTime of sprite 44 to 15000
  124.       else
  125.       end if
  126.       set the movieRate of sprite 44 to 1
  127.     end if
  128.   else
  129.   end if
  130. end
  131.  
  132. on setvideoTapePosition suggestion
  133.   global oStoryteller
  134.   setProp(the lsStateData of oStoryteller, #videoTapePosition, [suggestion])
  135. end
  136.  
  137. on freezeInventory
  138.   global oStoryteller, oPuppeteer, gFreezeInventory
  139.   set the inventoryStatus of oPuppeteer to #cool
  140.   setState(oStoryteller, #inventoryStatus, #cool)
  141.   set gFreezeInventory to 1
  142. end
  143.  
  144. on unFreezeInventory
  145.   global gFreezeInventory
  146.   setState(oStoryteller, #inventoryStatus, #hot)
  147.   set gFreezeInventory to 0
  148. end
  149.  
  150. on testForPsionicWaves suggestion
  151.   global oStoryteller, oPuppeteer
  152.   set cameraFeedbackRemaining to count(getProp(the lsStateData of oStoryteller, #cameraFeedbackRemaining))
  153.   set oscillatorInPlace to getState(oStoryteller, #oscillatorInPlace)
  154.   set tonalResidueRemaining to count(getProp(the lsStateData of oStoryteller, #tonalResidueRemaining))
  155.   if (cameraFeedbackRemaining < 1) and oscillatorInPlace and (tonalResidueRemaining < 4) then
  156.     setState(oStoryteller, #psionicWavesPresent, 1)
  157.     if inState(#hauntsRemaining, #phoneMessage) then
  158.       setState(oStoryteller, #ghostlyPhoneCall, #ringingNow)
  159.     end if
  160.   end if
  161. end
  162.  
  163. on setGhostlyPhoneCall suggestion
  164.   global oStoryteller, oPuppeteer
  165.   set currentState to getState(oStoryteller, #ghostlyPhoneCall)
  166.   if not getPos([#notyet, #ringingNow, #speaking, #done], suggestion) then
  167.     alert(" Sorry, " & suggestion & " is not an acceptable value for #ghostlyPhoneCall...")
  168.     exit
  169.   end if
  170.   if suggestion = #ringingNow then
  171.     if voidp(the lsEarshot of oPuppeteer) then
  172.       set phoneVol to 0
  173.     else
  174.       set phoneVol to getaProp(the lsEarshot of oPuppeteer, #phoneVol)
  175.       if not integerp(phoneVol) then
  176.         set phoneVol to 0
  177.       end if
  178.     end if
  179.     setLoop(#phoneRinging, phoneVol)
  180.     updateStage()
  181.   end if
  182.   if suggestion = #speaking then
  183.     cursorOff()
  184.     endLoop(#phoneRinging)
  185.     if (getState(oStoryteller, #psionicWavesPresent) = 1) and inState(#hauntsRemaining, #phoneMessage) then
  186.       soundEffect(#phoneRoxy)
  187.       wait(#soundStop, #phoneRoxy)
  188.       set suggestion to #done
  189.       setLoop(#roxyCallDone)
  190.       trimState(#hauntsRemaining, #phoneMessage)
  191.       trimState(#hauntsRemaining, #spookyOperator)
  192.       setState(oStoryteller, #AMBERVISION, #waitingForPlayer)
  193.       setState(oStoryteller, #PKamberStatus, #WaveActivated)
  194.       setState(oStoryteller, #PeekDisplay, #amberStatus)
  195.     else
  196.       if inState(#hauntsRemaining, #spookyOperator) then
  197.         if getState(oStoryteller, #phoneButtonsPressed) > 6 then
  198.           soundEffect(#spookyOperator)
  199.           wait(#soundStop, #spookyOperator)
  200.           trimState(#hauntsRemaining, #spookyOperator)
  201.           setProp(the lsStateData of oStoryteller, #phoneButtonsPressed, [0])
  202.           setLoop(#phoneDead)
  203.         end if
  204.       else
  205.         if inState(#hauntsRemaining, #phoneMessage) then
  206.           setLoop(#phoneDead)
  207.         else
  208.           setLoop(#roxyCallDone)
  209.         end if
  210.       end if
  211.     end if
  212.   end if
  213.   if suggestion = #done then
  214.     cursorOn()
  215.     endLoop(#phoneRinging)
  216.     endLoop(#spookyOperator)
  217.     endLoop(#phoneRoxy)
  218.     testForPsionicWaves()
  219.   end if
  220.   setProp(the lsStateData of oStoryteller, #ghostlyPhoneCall, [suggestion])
  221. end
  222.  
  223. on ghostCalls suggestion, howLoud
  224.   global oStoryteller, gLastCall
  225.   set possibleCallLists to [#allGhosts, #Brice_entry, #Margaret_entry, #Edwin_entry, #Brice_warm, #Margaret_warm, #Edwin_warm, #Brice_cool, #Margaret_cool, #Edwin_cool, #None]
  226.   set valueCheck to getPos(possibleCallLists, suggestion)
  227.   if valueCheck = 0 then
  228.     exit
  229.   end if
  230.   set suggestedCalls to []
  231.   if suggestion = #allGhosts then
  232.     repeat with theGhost in [#Margaret, #Brice, #Edwin]
  233.       if inState(#ghostsRemaining, theGhost) then
  234.         append(suggestedCalls, theGhost)
  235.         append(suggestedCalls, #nobody)
  236.         append(suggestedCalls, #nobody)
  237.         append(suggestedCalls, #nobody)
  238.       end if
  239.     end repeat
  240.   end if
  241.   if suggestion = #Brice_entry then
  242.     if inState(#ghostsRemaining, #Brice) then
  243.       set suggestedCalls to [#Brice]
  244.     end if
  245.   end if
  246.   if suggestion = #Margaret_entry then
  247.     if inState(#ghostsRemaining, #Margaret) then
  248.       set suggestedCalls to [#Margaret]
  249.     end if
  250.   end if
  251.   if suggestion = #Edwin_entry then
  252.     if inState(#ghostsRemaining, #Edwin) then
  253.       set suggestedCalls to [#Edwin]
  254.     end if
  255.   end if
  256.   if suggestion = #Brice_warm then
  257.     if inState(#ghostsRemaining, #Brice) then
  258.       set suggestedCalls to [#Brice, #nobody, #nobody]
  259.     end if
  260.   end if
  261.   if suggestion = #Margaret_warm then
  262.     if inState(#ghostsRemaining, #Margaret) then
  263.       set suggestedCalls to [#Margaret, #nobody, #nobody]
  264.     end if
  265.   end if
  266.   if suggestion = #Edwin_warm then
  267.     if inState(#ghostsRemaining, #Edwin) then
  268.       set suggestedCalls to [#Edwin, #nobody, #nobody]
  269.     end if
  270.   end if
  271.   if suggestion = #Brice_cool then
  272.     if inState(#ghostsRemaining, #Brice) then
  273.       set suggestedCalls to [#Brice, #nobody, #nobody, #nobody]
  274.     end if
  275.   end if
  276.   if suggestion = #Margaret_cool then
  277.     if inState(#ghostsRemaining, #Margaret) then
  278.       set suggestedCalls to [#Margaret, #nobody, #nobody, #nobody]
  279.     end if
  280.   end if
  281.   if suggestion = #Edwin_cool then
  282.     if inState(#ghostsRemaining, #Edwin) then
  283.       set suggestedCalls to [#Edwin, #nobody, #nobody, #nobody]
  284.     end if
  285.   end if
  286.   if count(suggestedCalls) < 1 then
  287.     set suggestedCalls to [#nobody]
  288.   end if
  289.   REPORT("<i>  suggestedCalls = " & suggestedCalls)
  290.   setProp(the lsStateData of oStoryteller, #ghostsCalling, suggestedCalls)
  291.   if suggestion = #None then
  292.     set sndChannels to getProp(the lsStateData of oStoryteller, #soundChannels)
  293.     set totalSnds to count(sndChannels)
  294.     set callChannels to []
  295.     repeat with i = 1 to totalSnds
  296.       set thisSnd to getProp(sndChannels, i)
  297.       if getProp(thisSnd, #sndName) = gLastCall then
  298.         append(callChannels, i)
  299.       end if
  300.     end repeat
  301.     repeat with c in callChannels
  302.       if soundBusy(c) then
  303.         set the volume of sound c to 50
  304.       end if
  305.     end repeat
  306.   else
  307.     set volCheck to getaProp([#low: 90, #medium: 180, #high: 255], howLoud)
  308.     if voidp(volCheck) then
  309.     else
  310.       setProp(the lsStateData of oStoryteller, #ghostCallVol, [volCheck])
  311.     end if
  312.   end if
  313.   REPORT("<i>  ghostCalls(): New volume is " & the volume of sound 5)
  314. end
  315.  
  316. on playDomainEntrySound
  317.   global oStoryteller, oPuppeteer, gCurrentEntrySounds, gSoundPath, gEntrySoundFiles, domainIsReady, gSoundsSuspended, gLastCall
  318.   if gSoundsSuspended = 1 then
  319.     exit
  320.   end if
  321.   if domainIsReady = 0 then
  322.     exit
  323.   end if
  324.   set batterUp to getState(oStoryteller, #ghostsCalling)
  325.   if (batterUp <> #nobody) or (waitaSec() = #finished) then
  326.     set callPlaying to 0
  327.     set sndChannels to getProp(the lsStateData of oStoryteller, #soundChannels)
  328.     set totalSnds to count(sndChannels)
  329.     set callChannels to []
  330.     repeat with i = 1 to totalSnds
  331.       set thisSnd to getProp(sndChannels, i)
  332.       if getProp(thisSnd, #sndName) = gLastCall then
  333.         append(callChannels, i)
  334.       end if
  335.     end repeat
  336.     repeat with c in callChannels
  337.       if soundBusy(c) then
  338.         set callPlaying to 1
  339.       end if
  340.     end repeat
  341.     if callPlaying = 0 then
  342.       set the volume of sound 5 to getState(oStoryteller, #ghostCallVol)
  343.       if voidp(gCurrentEntrySounds) then
  344.         set gCurrentEntrySounds to [#Margaret: 1, #Brice: 1, #Edwin: 1, #nobody: 1]
  345.         set gEntrySoundFiles to [#Margaret: ["Mcall1.aif", "Mcall10.aif", "Mcall2.aif", "Mcall3.aif", "Mcall4.aif", "Mcall5.aif", "Mcall6.aif", "Mcall7.aif", "Mcall8.aif", "Mcall9.aif"], #Brice: ["Bcall1.aif", "Bcall10.aif", "Bcall11.aif", "Bcall2.aif", "Bcall3.aif", "Bcall4.aif", "Bcall5.aif", "Bcall6.aif", "Bcall7.aif", "Bcall8.aif", "Bcall9.aif"], #Edwin: ["Ecall1.aif", "Ecall10.aif", "Ecall11.aif", "Ecall12.aif", "Ecall2.aif", "Ecall3.aif", "Ecall4.aif", "Ecall5.aif", "Ecall6.aif", "Ecall7.aif", "Ecall8.aif", "Ecall9.aif"], #nobody: ["Nobody.aif"]]
  346.       end if
  347.       set soundList to getProp(gEntrySoundFiles, batterUp)
  348.       set oldSound to getProp(gCurrentEntrySounds, batterUp)
  349.       set newSound to (oldSound mod count(soundList)) + 1
  350.       if batterUp = #nobody then
  351.         waitaSec(#start)
  352.       else
  353.         set newCall to getAt(soundList, newSound)
  354.         soundEffect(newCall, getState(oStoryteller, #ghostCallVol))
  355.         set gLastCall to newCall
  356.       end if
  357.       setProp(gCurrentEntrySounds, batterUp, newSound)
  358.       if count(getProp(the lsStateData of oStoryteller, #ghostsCalling)) > 1 then
  359.         set stateList to getProp(the lsStateData of oStoryteller, #ghostsCalling)
  360.         addAt(stateList, 1, getLast(stateList))
  361.         deleteAt(stateList, count(stateList))
  362.       end if
  363.     end if
  364.   end if
  365. end
  366.